#include <boost/interprocess/shared_memory_object.hpp>
#include <boost/interprocess/mapped_region.hpp>
#include <cstring>
#include <cstdlib>
#include <string>
#include <vector>

using namespace boost::interprocess;

int main()
{
	shared_memory_object memoryTirada(open_or_create, "Tirada", read_write);
	memoryTirada.truncate(sizeof(int) * 3);
	mapped_region regionCaras(memoryTirada, read_write, 0, sizeof(int));
	mapped_region regionTiradas(memoryTirada, read_write, 0, sizeof(int));
	mapped_region regionEstado(memoryTirada, read_write, 0, sizeof(int));
	*(int*)(regionEstado.get_address()) = 0;

	shared_memory_object memoryResultado(open_or_create, "Resultado", read_write);

	while (true)
	{
		int state = *(static_cast<int*>(regionEstado.get_address()));

		if (state == 1)
		{
			int caras = *(static_cast<int*>(regionCaras.get_address()));
			int tiradas = *(static_cast<int*>(regionTiradas.get_address()));

			memoryResultado.truncate(sizeof(int) * tiradas);
			mapped_region regionResultado(memoryResultado, read_write);

			std::vector<int> vecResultado;

			for (int i = 0; i < tiradas; ++i)
			{
				int numero = rand() % caras + 1;
				*(int*)(regionResultado.get_address() + sizeof(int) * i) = numero;
			}
		}
	}

	return 1;
}